Предисловие.

Многие слышали о формате записи звуковых файлов MP3. Этот формат позволяет записывать звук с высочайшим качеством и минимальным размером: в десять, а то и двенадцать раз меньше аналогичного wav, при этом качество записи практически не уступает качеству записи компакт-диска (44100Hz/16bit). К сожалению, по поводу этого формата до сих пор ничего не издано на русском языке (во всяком случае, я не нашел). И это довольно странно, так как западные первоисточники датируются аж 93-94 гг . Я попытаюсь рассказать о структуре MP3-файла, принципах сжатия, используемых в данном формате, о том, как происходит кодирование, о некоторых программах, работающих с данным форматом, а также о перспективах развития этого направления и еще кое о чем, что касается данного вопроса.

 

Что такое MPEG?


MPEG (Motion Pictures Expert Group) - название рабочей группы, созданной при Международной организации по стандартизации и Международном электрическом комитете (ISO/IEC) с целью разработки стандартов сжатия видео и аудиоинформации. Собственно MPEG определет аудио и видео форматы, использующие сжатие с частичной потерей информации, а также операции, производимые декодерами MPEG.

Стандарт
MPEG разрабатывался поэтапно. На сегодняшний день можно отметить 3 основных стандарта. Это MPEG-1, который определяет кодирование монофонического и стереофонического сигнала на частотах, необходимых для создания звука высокого качества (CD-quality) - 32,44.1 и 48 кГц.


MPEG-2
- расширение MPEG-1 для более низких частот записи, а также расширение, включающее возможность кодирования нескольких независимых звуковых источников.


MPEG-1
и MPEG-2 обладают трехуровневой структурой. Каждый уровень (layer) представляет собой семейство алгоритмов кодирования, сложность которых от уровня к уровню возрастает. Мы рассмотрим здесь только стандарт MP3, полное название которого - MPEG-1 Layer 3.

 

Что представляет собой стандарт MP3?

 

    Стандарт MP3 представляет собой схему сильного сжатия аyдиоинфоpмации с потеpями, полное название которой MPEG-1 Layer3 (иногда пишут просто MPEG Layer 3). Это один из цифровых форматов хранения аудио, разработанный Fraunhofer IIS пpи сотpyдничестве с THOMPSON, позднее утвержденный ISO как часть стандартов сжатого видео и аудио MPEG1 и MPEG2. Схема сжатия стандарта MP3 является наиболее сложной схемой семейства MPEG Layer 1/2/3. Она требует наибольших затрат машинного времени для кодирования по сравнению с двумя другими и обеспечивает более высокое качество кодирования. Используется главным образом для передачи аудиосигналов в реальном времени по сетевым каналам и для кодирования CD Audio. Для заранее заданных низких битpейтов дает сpавнительно высокое качество звyчания, поэтомy очень попyляpна. Замечу также, что данная схема обеспечивает наибольшее сжатие аудиоинформации по сравнению с Layer 1 и Layer 2

 

Для сравнения степеней сжатия аудиофайла на разных уровнях семейства MPEG Layer 1/2/3 приведу таблицу:

Степень сжатия

УРОВЕНЬ

1:4

Уровень Layer 1 (при ширине потока 384 kbps для стерео сигнала),

1:6...1:8

Уровень Layer 2 (при ширине потока 256..192 для стерео сигнала),

1:10...1:12

Уровень Layer 3 (при ширине потока 128..112 для стерео сигнала),

Таблица 1. Степени сжатия аудиофайла при использовании Layer 1/2/3

При данных значениях ширины потока каждый из уровней обеспечивает приблизительно одинаковое качество звучания, близкое к качеству компакт-диска.

    Аудиоинфоpмация, сжатая по данной схеме, может пеpедаваться потоком (streaming), а может храниться в файлах формата MP3 или WAV-MP3. Отличие второго от первого состоит в наличии дополнительного заголовка WAV-файла, что позволяет при наличии MP3 кодека в системе использовать для работы с таким файлом стандартные средства Windows

MP3 -- потоковый формат. В данном случае это значит, что исходный сигнал при кодировании разбивается на равные по продолжительности участки, именуемые фреймами и кодируемые отдельно, а при декодировании конечный сигнал формируется из последовательности декодированных фреймов.

Высокая степень компактности MP3 по сравнению с PCM 16Bit Stereo 44.1kHz (CD Audio) и ему подобными форматами при сохранении аналогичного качества звучания достигается с помощью дополнительного квантования по установленной схеме, позволяющей минимизировать потери качества.

Последнее, в свою очередь, достигается учетом особенностей человеческого слуха, в том числе эффекта маскирования слабого сигнала одного диапазона частот более мощным сигналом соседнего диапазона, когда он имеет место, или мощным сигналом, предыдущего фрейма, вызывающего временное понижение чувствительности к сигналу текущего фрейма. Также учитывается неспособность большинства людей различать сигналы, по мощности лежащие ниже определенного уровня, разного для разных частотных диапазонов. Все это позволяет экономить на наименее значимых с точки зрения восприятия человеком деталях звучания.

Степень сжатия, и, соответственно, объем дополнительного квантования, определяются не форматом, а пользователем при задании параметров кодирования. Ширина потока ( bitrate ) варьируется от наибольшего для MP3, равного 320kbs ( 320 килобит в секунду ), до 96kbs и ниже. Термин битрейт обозначает общую ширину потока, безразлично к тому, монофонический или стереофонический сигнал он содержит.

На проведенных тестах специально приглашенные опытные эксперты не смогли различить звучание оригинального трека на CD и закодированного в MP3 с коэффициентом сжатия 6:1, то есть с битрейтом в 256kbs. Более низкие битрейты, несмотря на их популярность, не дают возможности обеспечить надлежащее качество кодирования.

Самое большое на сегодня преимущество MP3 перед другими подобными форматами состоит в том, что ни про один другой формат нельзя пока уверенно сказать, что он полностью гарантирует устойчивое сохранение качества звучания на реализованных битрейтах, или что для него написано такое же множество удобного программного обеспечения, как для MP3.


Как работает MPEG-audio

MPEG-аудио компрессоры основаны на так называемом перцептивном кодировании (от англ. perception - восприятие). Целью такого кодирования является получение сигнала, который после последующего декодирования кажется идентичным для человеческого уха. Человеческий слух является нелинейным. Это означает, что человек воспринимает звуковой сигнал избирательно, что и используется в алгоритмах кодирования MPEG. MPEG-кодеры используют такую "психоакустическую модель", которая разбивает входной сигнал на несколько последовательных блоков-фреймов, для каждого из которых определяется спектр сигнала. Затем моделируются маскирующие свойства системы слуха человека и оценивается минимальный слышимый уровень.

Технология MP3

Чтобы достичь большого уровня компрессии, технология MP3 использует несколько основных приемов:

  1. Минимальный порог слышимости
  2. Эффект маскирования
  3. Битовый резерв
  4. Joint-stereo
  5. Кодирование Хаффмана


Рассмотрим эти приемы несколько более подробно.

1. Минимальный порог слышимости.

 

 Рис.2. Порог чувствительности человеческого уха.


Минимальный порог слышимости человеческого уха нелинеен и представлен, в соответствии с законом Флетчера и Мансена, кривой с максимумом чувствительности в диапазоне от 2 до 5 кГц, следовательно нет необходимости кодировать звуки, лежащие под этой кривой, поскольку они все равно не будут услышаны.

2. Эффект маскирования

Для адекватного восприятия звуковой картины человеческим ухом не требуется кодировать все звуки, т.к. слух человека устроен таким образом, что более тихие звуки (например шумы в паузах) маскируются более громкими звуками.

 

 Рис.3. Восприятие человеком звука при маскировании звукового спектра тоном 1 кГц на громкости 60 дБ.

Приведенный график иллюстрирует восприятие звука человеком при маскировании звукового спектра тоном 1 кГц на громкости 60 дБ.

3. Битовый резерв

Часто определенные фрагменты музыкального произведения не могут быть закодированны в рамках данного битового диапазона без потерь качества. В таком случае MP3 использует небольшой запас битов, как буфер, кодируя менее сложные фрагменты в меньший битовый диапазон.

4.
Joint-stereo

Joint-stereo - прием, основанный на особенности человеческого слуха, которая заключается в том, что ниже определенной частоты человек становится не способен определить пространственную картину звука. Таким образом, низкие частоты записываются как монофонический сигнал с добавлением некоторых данных, позволяющих восстановить минимальную информацию о пространственной звуковой картине.

5. Кодирование Хаффмана

MP3 использует классический алгоритм Хаффмана на последней стадии сжатия.Этот алгоритм создает в рамках целого числа битов коды переменной длины. Символы с большей вероятностью появления имеют коды меньшей длины. Коды Хаффмана обладают уникальными префиксами, так что они могут быть корректно декодированны, несмотря на их переменную длину. Декодирование осуществляется достаточно быстро (с использованием таблиц соответствия). Этот вид кодирования обычно позволяет сжать аудиоданные еще на 20%.

Кодирование Хаффмана является превосходным дополнением к перцептивным методам сжатия. Перцептивное кодирование особенно эффективно при кодировании сложного полифонического звучания в силу того, что многие звуки маскируются или их влияние на общую картину снижается. При кодировании же чистых звуков оказывается эффективным алгоритм Хаффмана из-за того, что оцифрованный звук содержит много избыточных байтов, которые при кодировании заменяются более короткими кодами.

 

Описание процесса кодирования

Перед кодированием исходный сигнал разбивается на участки, называемые фреймами, каждый из которых кодируется отдельно и помещается в конечном файле независимо от других. Последовательность воспроизведения определяется порядком расположения фреймов. Каждый фрейм может кодироваться с разными параметрами. Информация о них содержится в заголовке фрейма.

Кодирование начинается с того, что исходный сигнал с помощью фильтров разделяется на несколько "подсигналов", представляющих отдельные частотные диапазоны, сумма которых эквивалентна исходному сигналу.

Для каждого диапазона определяется величина маскирующего эффекта, создаваемого сигналом соседних диапазонов и сигналом предыдущего фрейма. Если она превышает мощность сигнала интересующего диапазона или мощность сигнала в нем оказывается ниже определенного опытным путем порога слышимости, то для данного фрейма данный диапазон сигнала отбрасывается и не кодируется.

Например, многие кодеры при низких битрейтах пренебрегают диапазоном выше 15--16kHz в силу того, что человеческое ухо этот диапазон практически не улавливает. Однако при отсутствии данных частот (свыше 15--16kHz) у слушателя возникает ощущение, что "что-то не так", хотя он и не может понять, что именно.

В качестве иллюстрации приведу частотно-временную характеристику работы кодера BladeEnc. Характеристика снималась с закодированного этим кодером участка музыкального произведения в формате mp3. Применялись два значения ширины потока: 256ps и 128kbps.

 

Рис.4. Частотно-временная характеристика работы BladeEnc при 256kbps

 

Рис.5. Частотно-временная характеристика работы BladeEnc при 128kbps

Как видно из рис.4 и рис.5 при 128kbps поисходит срез частот выше 16.5kHz. При 256kbps такого не наблюдается.

 

Для оставшихся данных для каждого диапазона определяется, сколькими битами на сэмпл мы можем пожертвовать, чтобы потери от дополнительного квантования были ниже величины маскирующего эффекта, соответственно чему и производится пожертвование. При этом учитывается, что потеря одного бита ведет к внесению шума квантования величиной порядка 6 dB.

После завершения работы психоакустической модели формируется итоговый поток, который дополнительно кодируется по Хаффману, на этом кодирование завершается.

 

На практике схема несколько сложнее.

Во-первых, необходимо согласовываться с требованиями битрейта. В зависимости от кодера это приводит при повышении битрейта к разного рода релаксациям при отборе сохраняемой части исходного сигнала, а при понижении -- наоборот, к ужесточению критериев. То есть на высоких битрейтах (например, 256 или 320 kbs) появляется возможность сохранить больше звуковой информации, чем на низких. Однако даже после обработки с помощью психоакустической модели оставшаяся аудиоинформация достаточно объемна, поэтому и приходится идти на потери.

Во-вторых, после каждого изменения исходного сигнала ( отброса сигнала какого-то одного диапазона ) величина маскирующего эффекта меняется, и, проводя отброс в разной последовательности, мы можем получать сильно отличающиеся результаты. Этот момент сильно замедляет работу кодеров.

Как вы уже, наверное, заметили алгоритм кодирования не определен четко. Таким образом различные кодеры кодируют сигнал по-разному, и поэтому у каждого кодера могут быть как свои достоинства, так и свои недостатки.

Кроме того, кодирование стереосигнала допустимо четырьмя различными методами:

    1. Dual Channel
    2. Каждый канал получает ровно половину потока и кодируется отдельно как моно сигнал. Рекомендуется главным образом в случаях, когда разные каналы содержат принципиально разный сигнал -- скажем, текст на разных языках.

      Выставляется в кодерах по требованию.

      Рекомендуется на битрейтах от 256kbps (субъективно).

    3. Stereo
    4. Каждый канал кодируется отдельно, но кодер может принять решение отдать одному каналу больше места, чем другому. Это может быть полезно в том случае, когда после отброса части сигнала, лежащей ниже порога слышимости или полностью маскируемой, оказалось, что код не полностью заполняет выделенный для данного канала объем, и кодер имеет возможность использовать это место для кодирования другого канала. В документации к mp3enc замечено, что этим, например, избегается кодирование "тишины" в одном канале, когда в другом есть сигнал.

      Но документация, на мой взгляд, неясно объясняет, что именно происходит. Отсюда и рекомендация в предыдущем пункте.

      Приходит в голову также такая мысль, что можно было бы использовать эту возможность для выравнивания степени потерь сигнала в случае, когда сигналы разных каналов существенно различаются. Но информации о том, делают ли это известные кодеры, нет. Так или иначе, это привело бы к замедлению процесса кодирования, но едва ли привело бы к заметному улучшению качества в большинстве нормальных случаев. Впрочем, качество лишним не бывает.

      Данный режим выставлен по умолчанию в большинстве ISO-based кодеров, а также используется продукцией FhG IIS на битрейтах выше 192kbs. Применим и на более низких битрейтах порядка 128kbs... 160kbs.

    5. Joint Stereo ( MS Stereo )
    6. Стереосигнал раскладывается на средний между каналами и разностный. При этом разностный сигнал кодируется с меньшим битрейтом.

      Это позволяет несколько увеличить качество кодирования в обычной ситуации, когда каналы по фазе совпадают. Но приводит и к резкому его ухудшению, если кодируются сигналы, по фазе не совпадающие. В частности, фазовый сдвиг практически всегда присутствует в записях, оцифрованных с аудиокассет, но встречается и на CD, особенно если CD сам был записан в свое время с аудиоленты.

      Режим выставлен по умолчанию продукцией FhG IIS для битрейтов от 112kbs до 192kbs.

       

    7. Joint Stereo ( MS/IS Stereo )

Вводит еще один метод упрощения стереосигнала, повышающий качество кодирования на особо низких битрейтах. Состоит в том, что для некоторых частотных диапазонов оставляется уже даже не разностный сигнал, а только отношение мощностей сигнала в разных каналах. Понятно, для кодирования этой информации употребляется еще более низкий битрейт.

В отличие от всех предыдущих, этот метод приводит уже к прямой потере информации (в частности фазовой), но выгоды в качестве от экономии места в пользу среднего сигнала оказываются выше, если речь идет о очень низких битрейтах. Этот режим по умолчанию используется продукцией FhG IIS для высоких частот на битрейтах от 96kbs и ниже. В ISO-based кодерах возможен выбор диапазона. Фактически, MS Stereo - частный случай MS/IS Stereo, когда переменная, отвечающая за кодируемый таким образом диапазон, принимает нулевое значение.

При применении данного режима кроме потери фазовой информации имеет место меланхоличное превращение противофазного сигнала кодером в полное отсутствие оного (сигнала).

Hosted by uCoz